////////////////////////////////////////////////////////////////////////////////

#ifndef _SGAMEOBJECT_H_
#include "sgameobject.h"
#endif

#ifndef _SERVER_H_
#include "server.h"
#endif

#include <cassert>

////////////////////////////////////////////////////////////////////////////////


SGameObject::SGameObject( int _ID, const Point& _position )
: m_ID(_ID),
  m_Position(_position)
{
}


////////////////////////////////////////////////////////////////////////////////


SGameObject::SGameObject( const SGameObject& _copy )
{
    m_ID = _copy.m_ID;
    m_Position = _copy.m_Position;
    m_PhysicalObject = _copy.m_PhysicalObject;
    UpdateObjectPointer();
}


////////////////////////////////////////////////////////////////////////////////


SGameObject::~SGameObject()
{
}


////////////////////////////////////////////////////////////////////////////////


int SGameObject::GetID() const
{
    return m_ID;
}


////////////////////////////////////////////////////////////////////////////////


bool SGameObject::operator==( const SGameObject& _obj ) const
{
    return m_ID == _obj.m_ID;
}


////////////////////////////////////////////////////////////////////////////////


void SGameObject::Collision( SGameObject& _obj )
{
}


////////////////////////////////////////////////////////////////////////////////


void SGameObject::CollideWithBullet( SBullet& _bullet )
{
}


////////////////////////////////////////////////////////////////////////////////


void SGameObject::CollideWithPlayer( SPlayer& _player )
{
}


////////////////////////////////////////////////////////////////////////////////


void SGameObject::CollideWithWall( SWall& _wall )
{
}


////////////////////////////////////////////////////////////////////////////////


void* SGameObject::GetPhysicalObject() const
{
    assert(m_PhysicalObject);
    return m_PhysicalObject;
}


////////////////////////////////////////////////////////////////////////////////


void SGameObject::SetPhysicalObject( void* _physicalObject )
{
    m_PhysicalObject = _physicalObject;
}


////////////////////////////////////////////////////////////////////////////////


const Point& SGameObject::GetPosition() const
{
    return m_Position;
}


////////////////////////////////////////////////////////////////////////////////


void SGameObject::SetPosition( const Point& _position )
{
    m_Position = _position;
}


////////////////////////////////////////////////////////////////////////////////


void SGameObject::UpdateObjectPointer()
{
    Server::Instance().Battlefield().Physics().SetUserData(*this);
}


////////////////////////////////////////////////////////////////////////////////
